Skip to content

Rework the dashboard for the consumer ICP — the actor who calls inference apps#4

Merged
adamsoffer merged 11 commits into
mainfrom
claude/peaceful-cohen-ca3e31
Jun 17, 2026
Merged

Rework the dashboard for the consumer ICP — the actor who calls inference apps#4
adamsoffer merged 11 commits into
mainfrom
claude/peaceful-cohen-ca3e31

Conversation

@adamsoffer

@adamsoffer adamsoffer commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

What & why

Reworks the developer dashboard's information architecture for the consumer ICP — the actor who calls inference apps on the network. The organizing axis is the organization's relationship to the network, framed by direction — apps you consume from the network (which orchestrators serve). Everything stays mock-data-only.

Split note. The operator/publishing layer — the actor who deploys apps — is stacked on top of this PR in #5 (Deployed-apps panel, the deploy onboarding, the /apps list, Deploy tokens, owner app-detail chrome). This PR is the consumer base; #5 re-adds the operator surface. Review and merge this one first.

Vocabulary (grounded in the Runner SDK + gateway)

  • model / capability → "app" — the deployed, callable unit; the SDK wraps an authored pipeline into an app (make_app(pipeline)).
  • Workspace → Organization — with public /orgs/[slug] profiles (GitHub-style).
  • runs / jobs → "calls" — the SDK uses request (batch) and session (live); "calls" is the consumer-facing umbrella that covers both. (Verified against runner-sdk.md + the gateway client.)

Routes & navigation

  • models/[id]apps/[id] — view-only app detail (Overview, Logs, etc.). Owner/operator chrome lives in Add the operator/publishing layer — deployed apps, /apps, deploy tokens #5.
  • /jobs/calls — promoted to a real nav item; removed the stale "Jobs" naming/copy and rebound the g c shortcut.
  • Environment (Production / Development) as a per-page facet + switcher.
  • Default to Home when signed in — root / redirects logged-in users to /home; signed-out visitors keep the Explore catalog at / (the public landing). Explore gets its own /explore route so signed-in users can still browse it.
  • Sidebar rebuilt into home / network / environment / organization zones.

Home — the consumer console

  • Command bar: org readout + greeting.
  • Onboarding ("Get started"): the consumer's first loop in three auto-detecting steps — create your account → get your API key → call an app.
  • Two even-height panels: Usage (your spend on the apps you call across the network) beside Recent activity — your organization's own calls, a live preview of /calls.

Calls view

  • Batch / Live segmented filter; the metric column adapts — latency for batch, session duration for live, Elapsed when mixed.
  • In-progress live sessions get a pulsing dot + ticking elapsed and sort to the top (new active status on AccountActivityRow).
  • Clicking a row opens a URL-addressable call inspector drawer (/calls?request=<id>) — batch shows request/response JSON, live shows a session summary.

Reviewer notes

  • Mock-data-only throughout (lib/dashboard/); single-source helper org-consumption.ts keeps headline numbers consistent across surfaces.
  • An active call deep-links to the request inspector; a dedicated live inspector is a follow-up.

pnpm typecheck, pnpm lint (0 warnings), and pnpm build all pass.

🤖 Generated with Claude Code

Evolve the developer dashboard's information architecture to serve both
the consumer (calls inference apps) and operator (deploys apps) without
splitting the UI by persona — the organizing axis is the workspace's
relationship to the network, framed by call direction.

Vocabulary (grounded in the Runner SDK + gateway):
- model/capability → "app" (a deployed pipeline; capability stays a
  network/protocol concept only)
- Workspace → Organization (with public /orgs/[slug] profiles)
- runs/jobs → "calls" (the SDK uses request/session; "calls" is the
  consumer-facing umbrella over batch + live)

Routes & nav:
- models/[id] → apps/[id] (ownership-gated tabs folded in)
- /jobs → /calls (standalone Calls log; removed stale "jobs" naming)
- Environment (Production/Development) as a per-page facet + switcher
- sidebar rebuilt into home / network / environment / organization zones

Home — "mission control" console:
- command bar (org readout + greeting + adaptive attention line that
  names the most urgent thing, e.g. an erroring app)
- two even-height panels: Deployed apps (what you serve) and Usage
  (what you consume, incl. spend on apps you didn't deploy)
- Recent activity = the workspace's own calls (preview of /calls)

Calls view:
- Batch / Live segmented filter; metric column adapts (latency for
  batch, session duration for live, "Elapsed" when mixed)
- live, in-progress sessions render a pulsing dot + ticking elapsed and
  sort to the top (new "active" AccountActivityStatus)

All surfaces remain mock-data-only; typecheck, lint (0 warnings), and
production build pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
dashboard Ready Ready Preview, Comment Jun 17, 2026 7:59pm

Request Review

- Home "Recent activity" subheader: "requests this workspace made" →
  "calls your organization made" (drops two retired terms at once).
- Replace every remaining "workspace" with "organization" across copy,
  comments, and mock owner labels (the Modal note reworded to "account/
  org tier"); zero "workspace" references remain.
- Deployed apps panel: the hero number is now the app count (it read as
  "51.4K apps" under the count-noun title). Calls served moves to the
  right-aligned secondary, mirroring the Usage panel so both stay
  even-height.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Drop the "Period 7d" selector and "View usage" link from the Home
  header. The page mixes timeframes (calls · 7d, spend · MTD, relative
  activity), so a page-wide period control is misleading, and "View
  usage" duplicates the sidebar item + the Usage panel's own link.
- Recent activity subheader: "calls your organization made" →
  "calls you've made" (it's already your org's dashboard, so naming the
  org is redundant).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The dashboard's operator deploys/publishes apps; orchestrators (via
gateways) actually run the pipeline and serve the inference. Reword the
Home composition note and the org-fleet / org-consumption / AppsHealthPanel
comments from "what you serve" / "SERVE ledger" / "calls served" to the
accurate deploy-vs-consume framing (call volume = calls the network handled
for your apps). Comments only — no rendered-UI change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…gated tab

Overview is a read-only summary (KPIs + deployment metadata), so it
shouldn't be owner-gated. Move it out of the owner-only set into the
shared consumer tabs — it leads whenever the app is deployment-backed
(has a pipeline), so anyone viewing the app sees it; catalog-only entries
with no deployment don't get an empty Overview. Settings is now the sole
ownership-gated tab.

Also fixes the stale tab comments (incl. the incorrect "Logs &
Settings (trail)" note — Logs was always a consumer tab).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Recent activity panel previews the org's individual calls, whose full
log is /calls — not the aggregate /usage dashboard. Repoint "View all"
(and the doc comment) accordingly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Root `/` now redirects signed-in users to /home (the dashboard default);
signed-out visitors keep the Explore catalog there as the public landing.
So Explore stays reachable for signed-in users without bouncing, the
catalog is extracted into an <ExploreView> component and given its own
/explore route (the sidebar "Explore" item points there).

- app/(app)/page.tsx → thin client redirect (authed → /home, else ExploreView)
- app/(app)/explore/page.tsx → renders ExploreView (no redirect)
- components/dashboard/ExploreView.tsx → the catalog (moved from the old root page)
- nav + active-state: Explore href "/" → "/explore"; getNavActive "/" special
  case removed; signed-out variant treats "/" and "/explore" as Explore
- repoint Explore-intent links ("/" → "/explore") in DashboardSearch,
  SignInWall, ActivityPanel empty state, apps/[id] + orgs/[slug] fallbacks
- robots: allow /explore

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Authoring uses the Runner SDK; deploying uses the `livepeer` CLI
(`livepeer init` / `livepeer push`). The onboarding "Deploy an example
app" step and the Apps page intro both describe pushing/deploying, so
they should name the CLI, not the SDK.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Clicking a call row now opens a right-side slide-over inspector instead
of dead-ending on /usage (which never handled ?request=). It's URL-
addressable at /calls?request={id} — deep-linkable, back-button closes.

- Drawer primitive gains a `right` side (480px slide-over).
- New CallDetailDrawer: status · Batch/Live · env · timing metrics
  (latency for batch, duration for live) · cost · caller, plus the
  request/response payloads (batch) or a session summary (live). Payloads
  are mock, shaped by the pipeline.
- CallsView reads ?request= (Suspense-wrapped), holds the row through the
  close transition so the drawer animates out with content intact.
- Call rows (CallsTable + Home ActivityPanel) link to /calls?request={id}.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@adamsoffer adamsoffer changed the title Rework dashboard IA around apps, environments, and calls Rework the dashboard to serve both ICPs — the consumer who calls inference apps and the one who deploys them Jun 4, 2026
@adamsoffer adamsoffer changed the title Rework the dashboard to serve both ICPs — the consumer who calls inference apps and the one who deploys them Rework the dashboard to serve both ICPs — the consumer who calls inference apps and the one who publishes them Jun 4, 2026
Instruction copy should use the product noun ("app"), consistent with
"Deployed apps" / "Deploy an example app". "Pipeline" is the SDK-layer
artifact term, best reserved for describing what you author.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…r base

Make the dashboard base consumer-only — the actor who *calls* inference
apps — and move every operator/publishing surface (the actor who
*deploys* apps) into a stacked PR layered on top of this one.

Removed from the consumer base:
- Home: Deployed-apps health panel + the command-bar deployments readout
  and erroring/building "attention line". Home is now Usage (what you
  spend calling apps) beside Recent activity (your own calls).
- Onboarding: the deploy-flavored "Get started" becomes the consumer
  loop — create your account → get your API key → call an app.
- Nav: the Apps list route (/apps) and its sidebar entry.
- Settings: the Deploy tokens tab + its settings-rail item.
- API keys: the "to deploy your own apps, use Deploy tokens" pointer.
- App detail: owner/operator chrome (Settings/manage tab, publish
  controls) gated off via OWNER_MODE_ENABLED — the app page is view-only
  for everyone in the consumer base.

The /apps/[id] detail route stays (consumers view app pages). The
stacked apps PR reverts this commit to re-add the full operator layer.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@adamsoffer adamsoffer changed the title Rework the dashboard to serve both ICPs — the consumer who calls inference apps and the one who publishes them Rework the dashboard for the consumer ICP — the actor who calls inference apps Jun 17, 2026
@adamsoffer adamsoffer merged commit bce6057 into main Jun 17, 2026
2 checks passed
@adamsoffer adamsoffer deleted the claude/peaceful-cohen-ca3e31 branch June 17, 2026 20:13
adamsoffer added a commit that referenced this pull request Jun 17, 2026
…base

Layers the operator/publishing surfaces — the actor who *deploys* apps —
on top of the consumer base merged in #4. Adds back, on top of main:

- Home: the Deployed-apps health panel, plus the command-bar deployments
  readout and the erroring/building "attention line" that names the
  single most urgent app the instant you land.
- Onboarding: the deploy-flavored "Get started" (push a hello-world
  pipeline) alongside the consumer loop.
- Nav: the Apps list route (/apps) and its sidebar entry.
- Settings: the Deploy tokens tab + its settings-rail item.
- API keys: the "to deploy your own apps, use Deploy tokens" pointer.
- App detail: owner/operator chrome (Settings/manage tab, publish
  controls) re-enabled via OWNER_MODE_ENABLED.

Rebased onto main after #4 was squash-merged: the original stacked
branch carried #4's pre-squash commits, which collided with the squashed
main. This is the same operator diff re-derived cleanly on top of main.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant